home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
TECHNICA
/
AUTOCAD
/
H107.ZIP
/
AUTOCM30.ZIP
/
AUTOCMND.LSP
< prev
next >
Wrap
Lisp/Scheme
|
1991-08-29
|
48KB
|
1,276 lines
;ac
; *** AUTOCMND.LSP ***
; To use the crosshairs and status line
; to start a command based on the entity
; under the crosshairs, to edit the entity
; under the crosshairs or to manipulate layers
; based on the entity under the crosshairs.
;
; Version 3 now includes text manipulation
;
; Eric Michalowsky
; 1753 Cloverfield Boulevard
; Santa Monica
; CA 90404
; (213) 829-7535
;
; See AutoCmnd.doc for registration information
;
(princ "\n\nAC<LOAD> Loading UNREGISTERED AUTOCOMMAND...")
(princ "\nAC<LOAD> Loading AUTOCOMMAND...please be patient ---")
(defun spin (/ xcntr)
(if (= $num nil) (setq $num 4))
(cond ((= (rem $num 4) 0) (princ "|/-\\|"))
((= (rem $num 4) 1) (princ "/-\\|/"))
((= (rem $num 4) 2) (princ "-\\|/-"))
((= (rem $num 4) 3) (princ "\\|/-\\"))
)
(setq $num (1+ $num))
(princ)
)
(spin)
(defun acerr (lerr)
(setvar "HIGHLIGHT" achi)
(setvar "CMDECHO" accecho)
(setvar "MENUECHO" acmecho)
(setvar "COORDS" accoord)
(setvar "SNAPMODE" acsnap)
(setq *error* olderr)
(princ)
)
(spin)
(defun RTD (ang)
(/ (* ang 180.0) pi)
)
(defun DTR (ang)
(* pi (/ ang 180.0))
)
(spin)
(defun mainprom ()
(setvar "COORDS" 0)
(prompt "\nAC<MAIN> MOVE CROSSHAIRS OVER ENTITY FOR RECOGNITION -> Press Capital Letter ->")
(prompt "\nAC<MAIN> Array/Break/Copy/Draw/Erase/oFfset/stretcH/Insert/Layer/Move/New/...")
(prompt "\nAC<MAIN> mirrOr/Pedit/Quit/Rotate/Scale/Text/redraW/eXplode/Zoom/?: ")
)
(spin)
(defun lyrprom ()
(prompt "\n\nAC<LAYER> MOVE CROSSHAIRS OVER ENTITY FOR RECOGNITION -> Press Capital Letter ->")
(prompt "\nAC<LAYER> 1 only/All/Delete/Freeze/Off/Quit/Set/eXit/?: ")
)
(defun zoomprom ()
(prompt "\n\nAC<ZOOM> Zoom - All/Biggest/Extents/Previous/Smallest/Window/eXit/?")
(prompt "\nAC<ZOOM> Pan - 2 pt.pan/Down/Left/Right/Up/eXit/?: ")
)
(defun textprom ()
(prompt "\nAC<TEXT> MOVE CROSSHAIRS OVER ENTITY FOR RECOGNITION -> Press Capital Letter ->")
(prompt "\nAC<TEXT> Continue/Edit/Height/Justification/Quit/Replace/...")
(prompt "\nAC<TEXT> Style/x-Value/redraW/eXit/?: ")
)
(spin)
(defun acpauz(/ acz aczz)
(setq acz 1)
(while acz
(initget 2 " ")
(setq aczz (getkword "\nAC<PAUSE> Press Enter to continue..."))
(if (or (= aczz nil) (= aczz " "))
(setq acz nil )
)
)
(graphscr)
)
(spin)
(defun edithelp ()
(textscr)
(prompt "\n\n\n\n\n\n\n\n\n\n")
(prompt "\nAC<HELP> AUTO-COMMAND Main Menu Help ")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> Move the crosshairs over an entity on the screen...")
(prompt "\nAC<HELP> If the entity is recognized, it is reported on the status line...")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> ╔═════╤═════════════════════╦═════╤══════════════════════╗")
(prompt "\nAC<HELP> ║Press│ To ║Press│ To ║")
(prompt "\nAC<HELP> ╠═════╪═════════════════════╬═════╪══════════════════════╣")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ If you ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ you will see a help screen here ║")
(prompt "\nAC<HELP> ║ so ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╚═════╧══════════════════════════════════════════════════╝")
(acpauz)
(editmenu)
)
(spin)
(defun lyrhelp ()
(textscr)
(prompt "\n\n\n\n\n\n\n\n\n\n")
(prompt "\nAC<HELP> AUTOCOMMAND Layer Menu Help ")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> Move the crosshairs over an entity on the screen...")
(prompt "\nAC<HELP> If the entity is recognized, it is reported on the status line...")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> ╔═════╤═════════════════════╦═════╤══════════════════════╗")
(prompt "\nAC<HELP> ║Press│ To ║Press│ To ║")
(prompt "\nAC<HELP> ╠═════╪═════════════════════╬═════╪══════════════════════╣")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ If you ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ you will see a help screen here ║")
(prompt "\nAC<HELP> ║ so ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╚═════╧══════════════════════════════════════════════════╝")
(acpauz)
(lyrmenu)
)
(spin)
(defun txthelp ()
(textscr)
(prompt "\n\n\n\n\n\n\n\n\n\n")
(prompt "\nAC<HELP> AUTOCOMMAND Text Menu Help ")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> Move the crosshairs over an entity on the screen...")
(prompt "\nAC<HELP> If the entity is recognized, it is reported on the status line...")
(prompt "\nAC<HELP>")
(prompt "\nAC<HELP> ╔═════╤═════════════════════╦═════╤══════════════════════╗")
(prompt "\nAC<HELP> ║Press│ To ║Press│ To ║")
(prompt "\nAC<HELP> ╠═════╪═════════════════════╬═════╪══════════════════════╣")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ If you ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ you will see a help screen here ║")
(prompt "\nAC<HELP> ║ so ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╚═════╧══════════════════════════════════════════════════╝")
(acpauz)
(txtmenu)
)
(spin)
(defun zoomhelp ()
(textscr)
(prompt "\n\n\n\n\n\n\n\n\n\n")
(prompt "\nAC<HELP> AUTO-COMMAND Zoom Menu Help ")
(prompt "\nAC<HELP> ╔═════╤═════════════════════╦═════╤══════════════════════╗")
(prompt "\nAC<HELP> ║Press│ To ║Press│ To ║")
(prompt "\nAC<HELP> ╠═════╪═════════════════════╬═════╪══════════════════════╣")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ ║")
(prompt "\nAC<HELP> ║ If you ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ you will see a help screen here ║")
(prompt "\nAC<HELP> ║ so ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ║ now ║")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╟─ now ─╢")
(prompt "\nAC<HELP> ║ REGISTER ║")
(prompt "\nAC<HELP> ╚═════╧══════════════════════════════════════════════════╝")
(acpauz)
(zoomenu)
)
;******************** Main Program **************************************
(defun C:AC ()
(setq olderr *error* *error* acerr)
(setq acsnap (getvar "SNAPMODE"))
(setq accecho (getvar "CMDECHO"))
(setq acmecho (getvar "MENUECHO"))
(setq accoord (getvar "COORDS"))
(setq achi (getvar "HIGHLIGHT"))
(setvar "SNAPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 2)
(setvar "COORDS" 0)
(setvar "HIGHLIGHT" 0)
(editmenu)
(setvar "HIGHLIGHT" 1)
(setvar "CMDECHO" 1)
(setvar "MENUECHO" 0)
(setvar "SNAPMODE" acsnap)
(setq *error* olderr)
(princ)
)
(spin)
(defun EDITMENU (/ mma mmbang mmbnm mmbx mmbxp mmby mmbyp mmbz mmbzp mmclr mme
mment mmkey mmlist mmlyr mmmlp mmodi mmscan mmsclr
mmslp mmslp2)
(mainprom)
(setq mmlist (list 65 97 66 98 67 99 68 100 69 101 70 102 72 104 73 105
; A a B b C c D d E e F f H h I i
76 108 77 109 78 110 79 111 80 112 81 113 82 114 83 115
; L l M m N n O o P p Q q R r S s
84 116 85 117 87 119 88 120 90 122 63))
; T t U u W w X x Z z ?
(setq mmmlp 1)
(while mmmlp
(setq mmslp nil)
(while (not mmslp)
(setq mmscan (grread 1)
mmkey (car (cdr mmscan)))
(if (member mmkey mmlist)
(progn
(setvar "HIGHLIGHT" 1)
(setvar "COORDS" 1)
(cond
((= mmkey 63)
(setq mmmlp nil)
(setq mmslp 1)
(edithelp)
)
((or (= mmkey 65) (= mmkey 97)) ;A - Array command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<ARRAY> Starting the Array command...")
(command ".ARRAY" mmslp2)
)
((or (= mmkey 66) (= mmkey 98)) ;B - Break command
(prompt "\nAC<REGISTER> Register now and you can use BREAK!!")
(acpauz)
(mainprom)
)
((or (= mmkey 67) (= mmkey 99)) ;C - Copy command
(prompt "\nAC<REGISTER> Register now and you can use COPY!!")
(acpauz)
(mainprom)
)
((or (= mmkey 69) (= mmkey 101)) ;E - Erase command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<ERASE> Starting the Erase command...")
(command ".ERASE" mmslp2)
)
((or (= mmkey 70) (= mmkey 102)) ;F - oFfset command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<OFFSET> Starting the oFfset command...")
(if (null $mmodi)
(setq $mmodi 0)
)
(setq mmodi (getdist (strcat
"\nAC<OFFSET> Enter/Pick offset distance <" (rtos $mmodi) ">...")))
(if (= mmodi nil)
(setq mmodi $mmodi)
(setq $mmodi mmodi)
)
(command ".OFFSET" mmodi mment)
)
((or (= mmkey 72) (= mmkey 104)) ;stretcH command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<STRETCH> Starting Stretch command...")
(command ".STRETCH" "C")
)
((or (= mmkey 73) (= mmkey 105)) ;I - Insert command
(prompt "\nAC<REGISTER> Register now and you can use INSERT!!")
(acpauz)
(mainprom)
)
((or (= mmkey 76) (= mmkey 108)) ;L - Layer Manipulation
(lyrmenu)
)
((or (= mmkey 77) (= mmkey 109)) ;M - Move command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<MOVE> Starting the Move command...")
(command ".MOVE" mmslp2)
)
((or (= mmkey 78) (= mmkey 110) (= mmkey 68) (= mmkey 100))
(setq mmmlp nil) ;N/D - New (draw) command
(setq mmslp 1)
(setvar "MENUECHO" 2)
(setvar "CMDECHO" 0)
(drawcmnd)
)
((or (= mmkey 79) (= mmkey 111)) ;O - mirrOr command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<MIRROR> Starting the mirrOr command...")
(command ".MIRROR" mmslp2)
)
((or (= mmkey 80) (= mmkey 112)) ;P - Pedit command
(prompt "\nAC<REGISTER> Register now and you can use PEDIT!!")
(acpauz)
(mainprom)
)
((or (= mmkey 81) (= mmkey 113)) ;Q - Quit
(prompt "\n\nAC<QUIT> AUTOCOMMAND !")
(prompt "\nAC<QUIT> The routine that will REVOLUTIONIZE the way you use AutoCad!!")
(setq mmmlp nil)
(setq mmslp 1)
)
((or (= mmkey 82) (= mmkey 114)) ;R - Rotate command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<ROTATE> Starting Rotate command...")
(command ".ROTATE" mmslp2)
)
((or (= mmkey 83) (= mmkey 115)) ;S - Scale command
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<SCALE> Starting Scale command...")
(command ".SCALE" mmslp2)
)
((or (= mmkey 84) (= mmkey 116)) ;T - Text manipulation
(txtmenu)
)
((or (= mmkey 85) (= mmkey 117)) ;U - Undo last Command
(prompt "\nAC<REGISTER> Register now and you can use UNDO!!")
(acpauz)
(mainprom)
)
((or (= mmkey 87) (= mmkey 119)) ;W - redraW
(prompt "\n ")
(prompt "\nAC<REDRAW> Redraw...")
(command "Redraw")
(mainprom)
(setvar "COORDS" 0)
)
((or (= mmkey 88) (= mmkey 120)) ;X - eXplode command
(cond
((= mmenm2 "PLINE")
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<EXPLODE> Exploding polyline...")
(command ".EXPLODE" mmslp2)
)
((= mmenm "INSERT")
(if (= mmbx mmby mmbz)
(progn
(setq mmmlp nil)
(setq mmslp 1)
(prompt "\n ")
(prompt "\nAC<EXPLODE> Exploding Block...")
(command ".EXPLODE" mmslp2)
)
(progn
(prompt "\n ")
(prompt
"\nAC<ERROR> Cannot explode Block - X, Y & Z scales differ - try again")
(acpauz)
(mainprom)
(setvar "COORDS" 0)
)
)
)
((or (/= mmenm "INSERT") (/= mmenm2 "PLINE"))
(prompt "\n ")
(prompt "\nAC<ERROR> Cannot explode this entity - try again...")
(acpauz)
(mainprom)
(setvar "COORDS" 0)
)
)
)
((or (= mmkey 90) (= mmkey 122)) ;Z - zoom
(zoomenu)
)
)
)
(progn
(if (and (not (member mmkey mmlist)) (and (> mmkey 0) (< mmkey 126)))
(progn
(prompt "\nAC<ERROR> Invalid key!!")
(acpauz)
(mainprom)
)
(progn
(setq mmslp (ssget mmkey))
(if (/= mmslp nil)
(progn
(setq mment mmkey)
(setq mmslp2 mmslp)
)
)
)
)
)
)
)
(setq mma (ssname mmslp2 0))
(setq mme mma
cominf (entget mma)
mmlyr (cdr (assoc 8 (entget mma)))
mmenm2 (cdr (assoc 0 (entget mma)))
mmenm nil
mmclr (cdr (assoc 62 (entget mma))))
(if (= mmenm2 "POLYLINE")
(setq mmenm2 "PLINE")
)
(if (= mmenm2 "INSERT")
(progn
(setq mmenm mmenm2)
(setq mmbx (rtos (cdr (assoc 41 (entget mma))) 2 1))
(setq mmby (rtos (cdr (assoc 42 (entget mma))) 2 1))
(setq mmbz (rtos (cdr (assoc 43 (entget mma))) 2 1))
(setq mmbxp (rtos (cdr (assoc 41 (entget mma))) 2 8))
(setq mmbyp (rtos (cdr (assoc 42 (entget mma))) 2 8))
(setq mmbzp (rtos (cdr (assoc 43 (entget mma))) 2 8))
(setq mmbang (rtos (rtd (cdr (assoc 50 (entget mma)))) 2 0))
(setq mmbnm (cdr (assoc 2 (entget mma))))
(if (= mmbx mmby mmbz)
(setq mmenm2 (strcat mmbnm "(" mmbx "<" mmbang ")"))
(if mmbz
(setq mmenm2 (strcat mmbnm "(" mmbx "," mmby "," mmbz "<" mmbang ")"))
(setq mmenm2 (strcat mmbnm "(" mmbx "," mmby "<" mmbang ")"))
)
)
)
)
(cond ((= mmclr 0) (setq mmsclr "BYBLOCK"))
((or (= mmclr 256) (= mmclr nil)) (setq mmsclr "BYLAYER"))
((= mmclr 1) (setq mmsclr "RED"))
((= mmclr 2) (setq mmsclr "YELLOW"))
((= mmclr 3) (setq mmsclr "GREEN"))
((= mmclr 4) (setq mmsclr "CYAN"))
((= mmclr 5) (setq mmsclr "BLUE"))
((= mmclr 6) (setq mmsclr "MAGENTA"))
((= mmclr 7) (setq mmsclr "WHITE"))
((= mmclr 8) (setq mmsclr "8"))
((= mmclr 9) (setq mmsclr "9"))
((= mmclr 10) (setq mmsclr "10"))
((= mmclr 11) (setq mmsclr "11"))
((= mmclr 12) (setq mmsclr "12"))
((= mmclr 13) (setq mmsclr "13"))
((= mmclr 14) (setq mmsclr "14"))
((= mmclr 15) (setq mmsclr "15"))
)
(grtext -1 (strcat mmenm2 " on lyr: " mmlyr))
(grtext -2 (strcat " with color: " mmsclr))
(setq mmslp nil)
)
)
;*************************************************************
(spin)
(defun drawcmnd ()
(if (= mmenm "INSERT") (setq mmenm2 "INSERT"))
(setq comnam mmenm2)
(if (= comnam "CIRCLE")(docirc))
(if (= comnam "INSERT")(doins))
(if (= comnam "LINE")(doline))
(if (= comnam "TEXT")
(progn
(setq comnam "DTEXT")
(dotext)
)
)
(if (= (MEMBER comnam '("CIRCLE" "LINE" "HATCH" "INSERT" "DTEXT")) nil)
(progn
(prompt "\n ")
(princ (strcat "\nAC<" comnam ">"))
(dolyr)
(command comnam)
)
)
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "MENUECHO" 0)
(setq *error* olderr)
(princ)
'OK
)
;insert same block at same scale or different
(spin)
(defun doins (/ dibnm diyn dibx diby dibz)
(dolyr)
(setq diyn nil dibnm nil)
(if (= (substr (cdr (assoc 2 cominf)) 1 2) "*X")
(setq comnam "HATCH")
(progn
(setq dibnm (cdr (assoc 2 cominf)))
(prompt "\n ")
(initget "Yes No")
(setq diyn (getkword (strcat
"\nAC<INSERT> Insert selected block (" dibnm ") at same scale? <Y>/N: ")))
(if (= diyn nil)(setq diyn "Yes"))
)
)
(if (= diyn "Yes")
(progn
(setq dibx (cdr (assoc 41 cominf)))
(setq diby (cdr (assoc 42 cominf)))
(setq dibz (cdr (assoc 43 cominf)))
(prompt "\n ")
(princ (strcat "\nAC<INSERT>"))
(prompt "\nAC<INSERT> Pick or Enter Insertion Point and Rotation Angle...")
(command comnam dibnm "X" dibx "Y" diby pause pause)
)
(progn
(prompt "\n ")
(princ (strcat "\nAC<" comnam ">"))
(command comnam)
)
)
'OK
)
;do circle from center of picked circle or elsewhere
(spin)
(defun docirc (/ dccen dcocen)
(dolyr)
(setq dcocen (cdr (assoc 10 cominf)))
(prompt "\n ")
(princ (strcat "\nAC<" comnam ">"))
(setq dccen
(getpoint "\nAC<CIRCLE> <RETURN> for center of selected circle/Center point: "))
(if (= dccen nil) (setq dccen dcocen))
(command comnam dccen)
'OK
)
;continue line from nearest endpoint or elsewhere
(spin)
(defun doline (/ dldi1 dldi2 dlstrt dlend1 dlend2)
(dolyr)
(prompt "\n ")
(princ (strcat "\nAC<" comnam ">"))
(setq dlend1 (cdr (assoc 10 cominf))
dlend2 (cdr (assoc 11 cominf))
dldi1 (distance dlend1 mment)
dldi2 (distance dlend2 mment))
(if (< dldi1 dldi2)
(setq dlstrt1 dlend1)
(setq dlstrt1 dlend2)
)
(setq dlstrt
(getpoint "\nAC<LINE> <RETURN> for nearest endpoint/From point: "))
(if (= dlstrt nil)
(command comnam dlstrt1)
(command comnam dlstrt)
)
'OK
)
(spin)
(defun dotext (/ dtang dtclyr dtcont dthyt dtinf dtins dtins2 dtj1 dtj2
dtjust dtlast dtlen dtnext dtlyr dttext dtxset dtstop
dtstyl dtstylh dtxlst dtxval dtxxlst)
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 2)
(setvar "COORDS" 1)
(prompt "\n ")
(princ (strcat "\n\nAC<" comnam ">"))
(prompt "\nAC<TEXT> Press E to start text elsewhere or")
(initget "E")
(setq dtcont (getkword "\nAC<TEXT> <RETURN> to continue after picked line:"))
(setq dtstop nil)
(setq dtxset (ssadd))
(setq dtlast (entlast))
(if (= dtcont nil)
(progn
(setq dtinf cominf)
(setq dtlyr (cdr (assoc 8 dtinf))
dtclyr (getvar "CLAYER")
dtstyl (cdr (assoc 7 dtinf))
dtstylh (cdr (assoc 40 (tblsearch "STYLE" dtstyl)))
dtxval (cdr (assoc 41 dtinf)))
(if (/= dtxval 1)
(progn
(setq dtxval1 (rtos dtxval 2 2))
(prompt (strcat "\nAC<TEXT> NOTE: Text X-Scale factor is " dtxval1 " and will be changed accordingly"))
(prompt "\nAC<TEXT> Take this into consideration for the margins")
(acpauz)
)
)
(if (= dtstylh 0)
(setq dthyt (cdr (assoc 40 dtinf)))
(setq dthyt nil)
)
(setq dtins (cdr (assoc 10 dtinf))
dtang (cdr (assoc 50 dtinf))
dtj1 (cdr (assoc 72 dtinf))
dtj2 (cdr (assoc 73 dtinf)))
(cond
((= dtj1 0)
(cond ((= dtj2 1)(setq dtjust "bl" dtins (cdr (assoc 11 dtinf))))
((= dtj2 2)(setq dtjust "ml" dtins (cdr (assoc 11 dtinf))))
((= dtj2 3)(setq dtjust "tl" dtins (cdr (assoc 11 dtinf))))
)
)
((= dtj1 1)
(cond ((= dtj2 0)(setq dtjust "c" dtins (cdr (assoc 11 dtinf))))
((= dtj2 1)(setq dtjust "bc" dtins (cdr (assoc 11 dtinf))))
((= dtj2 2)(setq dtjust "mc" dtins (cdr (assoc 11 dtinf))))
((= dtj2 3)(setq dtjust "tc" dtins (cdr (assoc 11 dtinf))))
)
)
((= dtj1 2)
(cond ((= dtj2 0)(setq dtjust "r" dtins (cdr (assoc 11 dtinf))))
((= dtj2 1)(setq dtjust "br" dtins (cdr (assoc 11 dtinf))))
((= dtj2 2)(setq dtjust "mr" dtins (cdr (assoc 11 dtinf))))
((= dtj2 3)(setq dtjust "tr" dtins (cdr (assoc 11 dtinf))))
)
)
((= dtj1 4)(setq dtjust "m" dtins (cdr (assoc 11 dtinf)))
)
((or (= dtj1 3) (= dtj1 5))
(prompt "\nAC<TEXT> Error: This routine will not work on ALIGNED or FIT text")
(setq dtstop 1)
(acpauz)
)
)
(if (null dtstop)
(progn
(command ".LAYER" "S" dtlyr "")
(if (= dtstylh 0)
(if (and (= dtj1 0) (= dtj2 0))
(dtext1)
(dtext2)
)
(if (and (= dtj1 0) (= dtj2 0))
(dtext3)
(dtext4)
)
)
(if (/= dtxval 1)
(progn
(setvar "HIGHLIGHT" 1)
(setq dtnext (entnext dtlast))
(while dtnext
(setq dtxset (ssadd dtnext dtxset))
(setq dtlast dtnext)
(setq dtnext (entnext dtlast))
)
(setq dtlen (sslength dtxset)
dtindex 0)
(while (< dtindex dtlen)
(setq dttext (entget (ssname dtxset dtindex))
dtxxlst (assoc 41 dttext)
dtxlst (cons 41 dtxval)
dttext (subst dtxlst dtxxlst dttext))
(entmod dttext)
(setq dtindex (1+ dtindex))
)
)
)
(command ".LAYER" "S" dtclyr "")
)
)
)
(progn
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 1)
(command comnam)
)
)
(princ)
(setvar "COORDS" 1)
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "MENUECHO" 0)
(setq *error* olderr)
)
(spin)
;continue text from that picked (style, height, rotation, just., etc.)
(defun dtext1 ()
(prompt "\nAC<TEXT> Enter text and continue...")
(command ".TEXT" "s" dtstyl dtins dthyt (rtd dtang) "."
".TEXT" "" ".")
(getins)
(command ".ERASE" "L" ""
".ERASE" "L" ""
".DTEXT" dtins2 dthyt (rtd dtang))
)
(defun dtext2 ()
(prompt "\nAC<TEXT> Enter text and continue...")
(command ".TEXT" "s" dtstyl dtjust dtins dthyt (rtd dtang) "."
".TEXT" "" ".")
(getins)
(command ".ERASE" "L" ""
".ERASE" "L" ""
".DTEXT" dtjust dtins2 dthyt (rtd dtang))
)
(spin)
(defun dtext3 ()
(prompt "\nAC<TEXT> Enter text and continue...")
(command ".TEXT" "s" dtstyl dtins (rtd dtang) "."
".TEXT" "" ".")
(getins)
(command ".ERASE" "L" ""
".ERASE" "L" ""
".DTEXT" dtins2 (rtd dtang))
)
(defun dtext4 ()
(prompt "\nAC<TEXT> Enter text and continue...")
(command ".TEXT" "s" dtstyl dtjust dtins (rtd dtang) "."
".TEXT" "" ".")
(getins)
(command ".ERASE" "L" ""
".ERASE" "L" ""
".DTEXT" dtjust dtins2 (rtd dtang))
)
(defun getins ()
(setq dtins2 (cdr (assoc 10 (entget (entlast)))))
)
(defun DOLYR (/ dlynlyr)
(setq dlynlyr (cdr (assoc 8 cominf)))
(command ".LAYER" "S" dlynlyr "")
(princ)
)
*************************************************************
(spin)
(defun LYRMENU (/ lya lyclr lyclyr lye lyenm lyent lyexp lykey lylist
lylyr lymlp lyscan lyslp lyyn)
(setvar "SNAPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 2)
(setvar "HIGHLIGHT" 0)
(setvar "COORDS" 0)
(lyrprom)
(setq lyrlist (list 49 65 97 68 100 70 102 79 111 83 115
; 1 A a D d F f O o S s
81 113 88 120 63))
; Q q X x ?
(setq lymlp 1)
(while lymlp
(setq lyslp nil)
(while (not lyslp)
(setq lyscan (grread 1))
(setq lykey (car (cdr lyscan)))
(if (member lykey lyrlist)
(progn
(cond
((= lykey 63) ;? - Help
(lyrhelp)
)
((or (= lykey 65) (= lykey 97)) ;A - All on
(command ".LAYER" "ON" "*" "")
(setq lymlp nil)
(mainprom)
)
((or (= lykey 83) (= lykey 115)) ;S - set current
(prompt "\nAC<REGISTER> Register now and you can use SET!!")
(acpauz)
(mainprom)
)
((or (= lykey 68) (= lykey 100)) ;D - delete all entities
(prompt "\nAC<REGISTER> Register now and you can use DELETE!!")
(acpauz)
(mainprom)
)
((or (= lykey 70) (= lykey 102)) ;F - Freeze
(setq lyclyr (getvar "CLAYER"))
(if (= lyclyr lylyr)
(progn
(prompt "\n ")
(prompt "\nAC<ERROR> Current layer cannot be frozen !!")
(prompt "\nAC<ERROR> Set new current layer and try again.")
(acpauz)
(lyrmenu)
)
(progn
(command ".LAYER" "F" lylyr "")
(setq lymlp nil)
(mainprom)
)
)
)
((or (= lykey 79) (= lykey 111)) ;O - Off
(setq lyclyr (getvar "CLAYER"))
(if (= lyclyr lylyr)
(progn
(prompt "\n ")
(prompt "\nAC<ERROR> Current layer should not be off.")
(prompt "\nAC<ERROR> Set new current layer and try again.")
(acpauz)
(lyrmenu)
)
(progn
(command ".LAYER" "OF" lylyr "")
(setq lymlp nil)
(mainprom)
)
)
)
((= lykey 49) ;1 - set & all others off
(setq lyexp (getvar "EXPERT"))
(setvar "EXPERT" 0)
(command ".LAYER" "S" lylyr "OF" "*" "N" "")
(setvar "EXPERT" lyexp)
(setq lymlp nil)
(mainprom)
)
((or (= lykey 81) (= lykey 113)) ;Q - Quit
(prompt "\n\nAC<QUIT> AUTOCOMMAND !")
(prompt "\nAC<QUIT> The routine that will REVOLUTIONIZE the way you use AutoCad!!")
(setq mmmlp nil)
(setq mmslp 1)
(setq lymlp nil)
(setq lyslp 1)
)
((or (= lykey 88) (= lykey 120)) ;X - eXit back to Main menu
(setq lymlp nil)
(setq lyslp 1)
(editmenu)
)
)
)
(progn
(if (and (not (member lykey lylist)) (and (> lykey 0) (< lykey 126)))
(progn
(prompt "\nAC<ERROR> Invalid key!!")
(acpauz)
(lyrprom)
)
(setq lyslp (ssget lykey))
)
)
)
)
(setq lya (ssname lyslp 0))
(setq lye lya
lylyr (cdr (assoc 8 (entget lya)))
lyenm2 (cdr (assoc 0 (entget lya)))
lyclr (cdr (assoc 62 (entget lya))))
(if (= lyenm2 "POLYLINE")
(setq lyenm2 "PLINE")
)
(if (= lyenm2 "INSERT")
(setq lyenm2 (strcat "BLK: " (cdr (assoc 2 (entget lya)))))
)
(if lyclr
(if (/= lyclr 256)
(setq lyenm2 (strcat "*" lyenm2))
)
)
(grtext -2 (strcat lyenm2 " on LYR: " lylyr))
(setq lyslp nil)
)
)
(spin)
(defun zoomenu (/ zoexp zopp1 zopp2 zokey zosmpt zowp1 zowp2)
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 2)
(setvar "COORDS" 1)
(setvar "HIGHLIGHT" 0)
(setq zoexp (getvar "EXPERT"))
(setvar "EXPERT" 5)
(zoomprom)
(initget "A a B b E e P p S s W w 2 D d L l R r U u X x Q q ?")
(setq zokey
(getkword "\nAC<ZOOM> Press 2/A/B/D/E/L/P/Q/R/S/U/W/X/? and Enter: <W> "))
(if (= zokey nil)
(setq zokey "W")
)
(cond
((= zokey "?") ;? - Help
(zoomhelp)
)
((= zokey "2") ;2 - pan 2 points
(prompt "\n ")
(setq zopp1 (getpoint "\nAC<ZOOM> 2 Point Pan: Pick first point to pan..."))
(setq zopp2 (getpoint zopp1 "\nAC<ZOOM> 2 Point pan: Pick second point..."))
(command ".PAN" zopp1 zopp2)
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "A") (= zokey "a")) ;A - zoom all
(command ".ZOOM" "A")
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "B") (= zokey "b")) ;B - zoom Biggest
(command ".ZOOM" "V")
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "D") (= zokey "d")) ;D - Pan Down
(prompt "\nAC<REGISTER> Register now and you can use PAN!!")
(acpauz)
(mainprom)
)
((or (= zokey "E") (= zokey "e")) ;E - zoom extents
(command ".ZOOM" "E")
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "L") (= zokey "l")) ;L - Pan Left
(prompt "\nAC<REGISTER> Register now and you can use PAN!!")
(acpauz)
(mainprom)
)
((or (= zokey "P") (= zokey "p")) ;P - Zoom Previous
(command ".ZOOM" "P")
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "Q") (= zokey "q"))
(prompt "\n\nAC<QUIT> AUTOCOMMAND !")
(prompt "\nAC<QUIT> The routine that will REVOLUTIONIZE the way you use AutoCad!!")
(setq mmmlp nil)
(setq mmslp 1)
)
((or (= zokey "R") (= zokey "r")) ;R - Pan Right
(prompt "\nAC<REGISTER> Register now and you can use PAN!!")
(acpauz)
(mainprom)
)
((or (= zokey "S") (= zokey "s")) ;S - Zoom Smallest
(prompt "\nAC<REGISTER> Register now and you can use ZOOM SMALLEST!!")
(acpauz)
(mainprom)
)
((or (= zokey "U") (= zokey "u")) ;U - Pan Up
(prompt "\nAC<REGISTER> Register now and you can use PAN!!")
(acpauz)
(mainprom)
)
((or (= zokey "W")(= zokey "w")) ;W - Zoom Window
(prompt "\n ")
(setq zowp1
(getpoint "\nAC<ZOOM> Window: Pick first corner of zoom window..."))
(setq zowp2 (getcorner zowp1 "\nAC<ZOOM> Window: Pick second corner..."))
(command "zoom" "W" zowp1 zowp2)
(setvar "EXPERT" zoexp)
(mainprom)
)
((or (= zokey "X") (= zokey "x")) ;X - Exit to Main Menu
(setvar "EXPERT" zoexp)
(editmenu)
)
)
)
(spin)
(defun TXTMENU (/ txapt1 txapt2 cxchk txcode txcon txent txenta txh
txindex txinf txins1 txins2 txj txj0 txj1 txj2 txjcon
txjcon2 txcount txkey txlist txloop txmlp txnlen
txnstr txnum txoch txostr txolen txchpos txscan txslp
txss txstatj txstr txstrl txxstyl txt0 txt1 txt7 txt40
txtlen txtlist txtp1 txtp2 txvalu txxs)
(setvar "SNAPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "MENUECHO" 2)
(setvar "HIGHLIGHT" 0)
(setvar "COORDS" 0)
(textprom)
(setq txtlist (list 67 99 69 101 72 104 74 106 81 113 82 114 83 115 86 118
; C c E e H h J j Q q R r S s V v
87 119 88 120 63))
W w X x ?
(setq txmlp 1)
(while txmlp
(setq txslp nil)
(while (not txslp)
(setq txscan (grread 1))
(setq txkey (car (cdr txscan)))
(if (member txkey txtlist)
(progn
(setvar "CMDECHO" 1)
(setvar "MENUECHO" 0)
(setvar "HIGHLIGHT" 1)
(setvar "COORDS" 1)
(cond
((= txkey 63) ;? - Text help
(txthelp)
)
((or (= txkey 67) (= txkey 99)) ;C - Continue
(prompt "\nAC<REGISTER> Register now and you can use CONTINUE!!")
(acpauz)
(mainprom)
)
((or (= txkey 69) (= txkey 101)) ;E - Edit text
(setq txslp nil)
(setq txmlp nil)
(setq mmmlp nil)
(setq mmslp nil)
(command ".DDEDIT" txent)
)
((or (= txkey 72) (= txkey 104)) ;H - Height
(setq txmlp nil)
(prompt "\n ")
(prompt "\nAC<TEXT> Height: Select text: <Enter for all> ")
(setq txss (ssget))
(if (= txss nil)
(progn
(setq txss (ssget "X" (list (cons 0 "TEXT"))))
(if (= txss nil)
(setq txnum "0")
(setq txnum (itoa (sslength txss)))
)
(prompt (strcat "\n * " txnum " lines of text selected..."))
)
(progn
(setq txnum (itoa (sslength txss)))
(prompt (strcat "\n * " txnum " entities of text selected..."))
)
)
(if (null $txh)
(setq $txh 0)
)
(setq txh (getreal (strcat
"\nAC<TEXT> Height: Enter new height <" (rtos $txh) ">: ")))
(if (= txh nil)
(setq txh $txh)
(setq $txh txh)
)
(setq txcode 40)
(chgtxt txh)
(setvar "COORDS" 0)
(mainprom)
)
((or (= txkey 74) (= txkey 106)) ;J - Justification
(prompt "\nAC<REGISTER> Register now and you can use JUSTIFY!!")
(acpauz)
(mainprom)
)
((or (= txkey 81) (= txkey 113)) ;Q - Quit
(prompt "\n\nAC<QUIT> AUTOCOMMAND !")
(prompt "\nAC<QUIT> The routine that will REVOLUTIONIZE the way you use AutoCad!!")
(setq mmmlp nil)
(setq mmslp 1)
(setq txmlp nil)
(setq txslp 1)
)
((or (= txkey 82) (= txkey 114)) ;Replacement
(setq txmlp nil
txcount 0)
(prompt "\n ")
(prompt "\nAC<TEXT> Replace: Select text: <Enter for all> ")
(setq txss (ssget))
(if (= txss nil)
(progn
(setq txss (ssget "X" (list (cons 0 "TEXT"))))
(if (= txss nil)
(setq txnum "0")
(setq txnum (itoa (sslength tss)))
)
(prompt (strcat "\nAC<TEXT> Replace: " txnum " lines of text selected..."))
)
(progn
(setq txnum (itoa (sslength txss)))
(prompt (strcat "\nAC<TEXT> Replace: " txnum " entities selected..."))
)
)
(while
(= 0 (setq txolen (strlen
(setq txostr (getstring t "\nAC<TEXT> Replace: Old String: ")))))
(prompt "AC<TEXT> Replace: Null input invalid!")
)
(setq txnlen (strlen (setq txnstr
(getstring t "\nAC<TEXT> Replace: New string: "))))
(setq txindex 0
txnum (sslength txss))
(while (< txindex txnum)
(if (= "TEXT" (cdr (assoc 0 (setq txlist (entget (ssname txss txindex))))))
(progn
(setq txchk nil
txchpos 1
txstr (cdr (setq txstrl (assoc 1 txlist))))
(while (= txolen (strlen (setq txoch (substr txstr txchpos txolen))))
(if (= txoch txostr)
(progn
(setq txstr (strcat(substr txstr 1 (1- txchpos)) txnstr(substr txstr (+ txchpos txolen)))
txchk t
txchpos (+ txchpos txnlen))
)
(setq txchpos (1+ txchpos))
)
)
(if txchk
(progn
(setq txlist (subst (cons 1 txstr) txstrl txlist))
(entmod txlist)
(setq txcount (1+ txcount))
)
)
)
)
(setq txindex (1+ txindex))
)
(prompt "\nAC<TEXT> Replace: Changed ")
(princ txcount)
(princ " text lines.")
(setvar "COORDS" 0)
(setq txmlp nil)
(mainprom)
)
((or (= txkey 83) (= txkey 115)) ;S - Style
(prompt "\nAC<REGISTER> Register now and you can use STYLE!!")
(acpauz)
(mainprom)
)
((or (= txkey 86) (= txkey 118)) ;V - x-Value
(setq txmlp nil)
(prompt "\n ")
(prompt "\nAC<TEXT> x-Value: Select text: <Enter for all> ")
(setq txss (ssget))
(if (= txss nil)
(progn
(setq txss (ssget "X" (list (cons 0 "TEXT"))))
(if (= txss nil)
(setq txnum "0")
(setq txnum (itoa (sslength txss)))
)
(prompt (strcat "\nAC<TEXT> x-Value: " txnum " lines of text selected..."))
)
(progn
(setq txnum (itoa (sslength txss)))
(prompt (strcat "\nAC<TEXT> x-Value: " txnum " entities of text selected..."))
)
)
(if (null $txv)
(setq $txv 1)
)
(setq txvalu (getreal (strcat
"\nAC<TEXT> x-Value: Enter new x-scale: <" (rtos $txv) ">: ")))
(if (= txvalu nil)
(setq txvalu $txv)
(setq $txv txvalu)
)
(setq txcode 41)
(chgtxt txvalu)
(setvar "COORDS" 0)
(mainprom)
)
((or (= txkey 87) (= txkey 119)) ;W - redraW
(command ".REDRAW")
(setvar "COORDS" 0)
(textprom)
)
((or (= txkey 88) (= txkey 120)) ;X - eXit back to Main menu
(setq txmlp nil)
(setq txslp 1)
(editmenu)
)
)
)
(progn
(if (and (not (member txkey txtlist)) (and (> txkey 0) (< txkey 126)))
(progn
(prompt "\nAC<ERROR> Invalid key!!")
(acpauz)
(textprom)
)
(progn
(setq txslp (ssget txkey))
(if (/= txslp nil)
(progn
(setq txent txkey)
(setq txslp2 txslp)
)
)
)
)
)
)
)
(setq txinf (ssname txslp 0))
(setq txlist txinf
cominf (entget txinf)
txt0 (cdr (assoc 0 (entget txinf))))
(if (= txt0 "TEXT")
(progn
(setq txt1 (cdr (assoc 1 (entget txinf)))
txt7 (cdr (assoc 7 (entget txinf)))
txt40 (cdr (assoc 40 (entget txinf)))
txtlen (strlen txt1)
txtp1 (cdr (assoc 72 (entget txinf)))
txtp2 (cdr (assoc 73 (entget txinf)))
txt41 (cdr (assoc 41 (entget txinf)))
)
(if (> txtlen 25)
(progn
(setq txt1 (substr txt1 1 20))
(setq txt1 (strcat txt1 "..."))
)
)
(cond
((= txtp2 0)
(cond
((= txtp1 0) (setq txstatj "L"))
((= txtp1 1) (setq txstatj "C"))
((= txtp1 2) (setq txstatj "R"))
((= txtp1 3) (setq txstatj "A"))
((= txtp1 4) (setq txstatj "M"))
((= txtp1 5) (setq txstatj "F"))
)
)
((= txtp2 1)
(cond
((= txtp1 0) (setq txstatj "BL"))
((= txtp1 1) (setq txstatj "BC"))
((= txtp1 2) (setq txstatj "BR"))
)
)
((= txtp2 2)
(cond
((= txtp1 0) (setq txstatj "ML"))
((= txtp1 1) (setq txstatj "MC"))
((= txtp1 2) (setq txstatj "MR"))
)
)
((= txtp2 3)
(cond
((= txtp1 0) (setq txstatj "TL"))
((= txtp1 1) (setq txstatj "TC"))
((= txtp1 2) (setq txstatj "TR"))
)
)
)
(if (= txt41 1)
(grtext -1 (strcat "TXT - J:"txstatj " S:" txt7 " H:" (rtos txt40 2 2)))
(grtext -1 (strcat "TXT - W:" (rtos txt41 2 2) " J:" txstatj " S:" txt7 " H:" (rtos txt40 2 2)))
)
(grtext -2 (strcat "\"" txt1 "\""))
)
)
(setq txslp nil)
)
)
(defun chgtxt (txp / ctindex tlen)
(setq ctlen (sslength txss)
ctindex 0)
(while (< ctindex ctlen)
(setq ctlist (entget (ssname txss ctindex)))
(if (= (cdr (assoc 0 ctlist)) "TEXT")
(setq ctlist (subst (cons txcode txp) (assoc txcode ctlist) ctlist))
)
(entmod ctlist)
(setq ctindex (1+ ctindex))
)
)
(princ "->")
(prompt "\nAC<LOAD> UNREGISTERED AUTOCOMMAND (Version 3.0) loaded...type AC to run...")
(princ)